home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 24 / CU Amiga Magazine's Super CD-ROM 24 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-07].iso / CUCD / Programming / SWI / source / html / pl.pl < prev    next >
Encoding:
Text File  |  1997-01-20  |  6.9 KB  |  231 lines

  1. /*  $Id: pl.pl,v 1.2 1997/01/20 17:39:44 jan Exp $
  2.  
  3.     Designed and implemented by Jan Wielemaker
  4.     E-mail: jan@swi.psy.uva.nl
  5.  
  6.     Copyright (C) 1996 University of Amsterdam. All rights reserved.
  7. */
  8.  
  9. :- module(latex2html4pl, []).
  10. :- use_module(library(latex2html)).
  11.  
  12. :- latex2html_module.
  13. :- tex_load_commands(pl).
  14.  
  15.          /*******************************
  16.          *           MACROS        *
  17.          *******************************/
  18.  
  19. #(defitem(Label),    [html('<P>'), html('<DT>'), Label, html('<DD>')]).
  20.  
  21.          /*******************************
  22.          *         COMMANDS        *
  23.          *******************************/
  24.  
  25. cmd(bug({TeX}), HTML) :-
  26.     translate_footnote(['BUG:', ' '|TeX], HTML).
  27. cmd(fileext({Ext}), #code(Text)) :-
  28.     sformat(Text, '.~w', [Ext]).
  29.  
  30. cmd(var(        {A1}), #var(+A1)).
  31. cmd(arg(        {A1}), #var(+A1)).
  32. cmd(file(        {A1}), #code(+A1)).
  33. cmd(clib(        {A1}), #code(+A1)).
  34. cmd(cglobalvar(        {A1}), #code(+A1)).
  35. cmd(ctype(        {A1}), #code(+A1)).
  36. cmd(pllib(        {A1}), #code([library, #embrace(+A1)])).
  37. cmd(hook(        {_A1}), #i(#embrace(hook))).
  38. cmd(env(        {A1}), #code(+A1)).
  39. cmd(program(        {A1}), #b(A1)).
  40. cmd(exam(        {A1}), #code(+A1)).
  41. cmd(jargon(        {A1}), #em(+A1)).
  42. cmd(chr(        {A1}), #code(+A1)).
  43. cmd(const(        {A1}), #code(+A1)).
  44. cmd(op(            {A1}), #strong(+A1)).
  45. cmd(cmdlineoption(    {A1}), #strong(+A1)).
  46. cmd(fmtseq(        {A1}), #code(A1)).
  47.  
  48. cmd(versionshort,         _, nospace(Version)) :-
  49.     feature(version, V),
  50.     Major is V // 10000,
  51.     Minor is (V // 100) mod 100,
  52.     Patch is V mod 100,
  53.     concat_atom([Major, Minor, Patch], '.', Version).
  54. cmd(bnfor, '|').
  55. cmd(bnfmeta({Meta}), [nospace('<'), #var(+Meta), nospace('>')]).
  56. cmd(argoption({RawName}, {ArgName}),
  57.     [ #strong(Name), ' ', #var(ArgName)
  58.     ]) :-
  59.     clean_tt(RawName, Name).
  60. cmd(predref({RawName}, {Arity}), #lref(Text, Text)) :-
  61.     clean_name(RawName, Name),
  62.     sformat(Text, '~w/~w', [Name, Arity]).
  63. cmd(functor({RawName}, {Arity}), Text) :-
  64.     clean_name(RawName, Name),
  65.     sformat(Text, '~w/~w', [Name, Arity]).
  66. cmd(compound({Name}, {Args}), #code([+Name, #embrace(+Args)])).
  67. cmd(term({Name}, {Args}), #code([+Name, #embrace(+Args)])).
  68. cmd(manref({RawName}, {Section}),
  69.     [#strong(Name), #embrace(Section)]) :-
  70.     clean_tt(RawName, Name).
  71. cmd(funcref({RawName}, {Args}),
  72.     #lref(RefName, [Name, #embrace(+Args)])) :-
  73.     clean_tt(RawName, Name),
  74.     sformat(RefName, '~w()', [Name]).
  75. cmd(definition({Tag}),
  76.     #defitem(+Tag)).
  77. cmd(predicate({RawName}, {'0'}, {_}),
  78.     #defitem(#label(RefName, #strong(Name)))) :-
  79.     clean_name(RawName, Name),
  80.     sformat(RefName, '~w/0', [Name]),
  81.     add_to_index(RefName, +RefName).
  82. cmd(predicate({RawName}, {Arity}, {Args}),
  83.     #defitem(#label(RefName,
  84.             [ #strong(Name), #embrace(#var(+Args))
  85.             ]))) :-
  86.     clean_name(RawName, Name),
  87.     sformat(RefName, '~w/~w', [Name, Arity]),
  88.     add_to_index(RefName, +RefName).
  89. cmd(directive({RawName}, {Arity}, {Args}),
  90.     #defitem(#label(RefName,
  91.             [ #strong(Name), #embrace(#var(Args))
  92.             ]))) :-
  93.     clean_name(RawName, Name),
  94.     sformat(RefName, '~w/~w', [Name, Arity]),
  95.     add_to_index(RefName, +RefName).
  96. cmd(cfunction({RType}, {Name}, {Args}),
  97.     #defitem(#label(RefName,
  98.             [ #var(RType), ' ', #strong(Name), #embrace(#var(+Args))
  99.             ]))) :-
  100.     sformat(RefName, '~w()', [Name]),
  101.     add_to_index(RefName, +RefName).
  102. cmd(cmacro({RType}, {Name}, {Args}),
  103.     #defitem(#label(RefName,
  104.             [ #var(RType), ' ', #strong(Name), #embrace(#var(+Args))
  105.             ]))) :-
  106.     sformat(RefName, '~w()', [Name]),
  107.     add_to_index(RefName, +RefName).
  108. cmd(prefixop({RawName}, {Arg}),
  109.     #defitem(#label(RefName, [#strong(Name), ' ', #var(Arg)]))) :-
  110.     clean_name(RawName, Name),
  111.     sformat(RefName, '~w/1', [Name]),
  112.     add_to_index(RefName, +RefName).
  113. cmd(infixop({RawName}, {Arg1}, {Arg2}),
  114.     #defitem(#label(RefName,
  115.             [ #var(Arg1), ' ', #strong(Name), ' ', #var(Arg2)
  116.             ]))) :-
  117.     clean_name(RawName, Name),
  118.     sformat(RefName, '~w/2', [Name]),
  119.     add_to_index(RefName, +RefName).
  120. cmd(termitem({Name}, {[]}), #defitem(#strong(+Name))).
  121. cmd(termitem({Name}, {Arg}),
  122.     #defitem([#strong(+Name), #embrace(#var(+Arg))])).
  123. cmd(fmtchar({Name}), #defitem(#code(+Name))).
  124. cmd(optionval({Value}), #defitem(#strong(+Value))).
  125. cmd(cmdlineoptionitem(M, {Option}, {Arg}),
  126.     #defitem([#strong(+Option), Sep, #var(+Arg)])) :-
  127.     (   M = *
  128.     ->  Sep = []
  129.     ;   Sep = [' ']
  130.     ).
  131. cmd(optionarg({Option}, {Arg}),
  132.     #defitem([#strong(Option), #var(Arg)])).
  133. cmd(traceoption({Char}, {Name}, {Description}),
  134.     [ #defitem([#strong(Name), ' ', #embrace(#code(Char))]),
  135.       +Description
  136.     ]).
  137. cmd(pleaseoption({Name}, {Type}, {Default}),
  138.     #defitem([ #strong(Name), ' ', #embrace(#var(Type)), ' ',
  139.            'Default:', ' ', Default
  140.          ])).
  141. cmd(featureoption({Name}, {Type}),
  142.     #defitem([#strong(Name), ' ', #embrace(#var(Type))])).
  143. cmd(escapeitem({Name}), #defitem(#code([nospace('\'), +Name]))).
  144. cmd(ttdef({Def}), #defitem(#code(+Def))).
  145. cmd(predicatesummary({RawName}, {Arity}, {Summary}),
  146.     #row([#predref(Name, Arity), +Summary])) :-
  147.     clean_name(RawName, Name).
  148. cmd(oppredsummary({RawName}, {Arity}, {_Assoc}, {_Pri}, {Summary}),
  149.     #row([#predref(Name, Arity), +Summary])) :-
  150.     clean_name(RawName, Name).
  151. cmd(functionsummary({RawName}, {Arity}, {Summary}),
  152.     #row([#predref(Name, Arity), +Summary])) :-
  153.     clean_name(RawName, Name).
  154. cmd(opfuncsummary({RawName}, {Arity}, {_Assoc}, {_Pri}, {Summary}),
  155.     #row([#predref(Name, Arity), +Summary])) :-
  156.     clean_name(RawName, Name).
  157. cmd(opsummary({Pri}, {Assoc}, {RawName}, {Summary}),
  158.     #row([Pri, Assoc, Name, +Summary])) :-
  159.     clean_name(RawName, Name).
  160.  
  161. cmd(texcmd({Name}), #code([nospace(\), Name])).
  162. cmd(texenv({Name}), #code(Name)).
  163. cmd(texmode({Name}), #var(Name)).
  164.  
  165.          /*******************************
  166.          *               C        *
  167.          *******************************/
  168.  
  169. cmd(Cmd, HTML) :-
  170.     special(Cmd, Atom),
  171.     HTML = #code(Atom).
  172.  
  173. special('Sexe', '#!').
  174. special('Scut', '!').
  175. special('Scomma', ',').
  176. special('Sifthen', '->').
  177. special('Ssoftcut', '*->').
  178. special('Sdot', '.').
  179. special('Ssemicolon', ';').
  180. special('Slt', '<').
  181. special('Seq', '=').
  182. special('Suniv', '=..').
  183. special('Saeq', '=:=').
  184. special('Sle', '=<').
  185. special('Sequal', '==').
  186. special('Sstructeq', '=@=').
  187. special('Sstructneq', '\=@=').
  188. special('Sane', '=\=').
  189. special('Sgt', '>').
  190. special('Sge', '>=').
  191. special('Stlt', '@<').
  192. special('Stle', '@=<').
  193. special('Stgt', '@>').
  194. special('Stge', '@>=').
  195. special('Snot', '\+').
  196. special('Sne', '\=').
  197. special('Snequal', '\==').
  198. special('Shat', '^').
  199. special('Sbar', '|').
  200. special('Stimes', '*').
  201. special('Spow', '**').
  202. special('Splus', '+').
  203. special('Sminus', '-').
  204. special('Sdiv', '/').
  205. special('Sidiv', '//').
  206. special('Sand', '/\').
  207. special('Slshift', '<<').
  208. special('Srshift', '>>').
  209. special('Sneg', '\').
  210. special('Sesc', '\').
  211. special('Sor', '\/').
  212. special('Sdollar', '$').
  213. special('Squest', '?').
  214. special('Smodule', ':').
  215. special('Sneck', ':-').
  216. special('Sdirective', '?-').
  217. special('Sdcg', '-->').
  218. special('Bc', '\c').
  219. special('Bn', '\n').
  220. special('Br', '\r').
  221. special('Bl', '\l').
  222. special('BB', '\\').
  223. special('Stilde', '~').
  224. special('Spercent', '%').
  225. special('Shash', '#').
  226.  
  227. clean_name([\Special], Out) :-
  228.     special(Special, Out), !.
  229. clean_name([Out], Out).
  230.     
  231.